// 隐藏内部实现

function fn(){//    最小暴露原则
    var a = 1;
    var b = 2;
    return c = a + b;
}
fn();//     3
console.log(fn());

// var b;
// function foo(a){
//     b = a + bar(a * 2);
//     console.log(b * 3);
// }
// function bar(a){
//     return a - 1
// }
// foo(2);


// 更合理的写法
// function foo(a){
//     var b;

//     function bar(a){
//         return a - 1;
//     }

//     b = a + bar(a * 2);
//     console.log(b * 3);
// }
// foo(2);

// 规避冲突
function foo(a){
    function bar(a){
        // i = 3;无限循环
        var i = 3;
        console.log(a + i);
    }
    for(var i =0; i < 10; i++){
        bar(i * 2);// 无限循环了
    }
}
foo();